package com.lahuan.config.datasource;


import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * 动态数据源定义
 */
public class DynamicRoutingDataSource extends AbstractRoutingDataSource {
    /**
     * 动态数据源名称上下文
     */
    private static final ThreadLocal<String> DATASOURCE_LOOKUP_KEY_HOLDER = new ThreadLocal<>();

    /**
     * 设置当前线程使用数据源 key
     */
    public static void setLookupKey(String key) {
        DATASOURCE_LOOKUP_KEY_HOLDER.set(key);
    }

    /**
     * 获取当前线程使用数据源 key
     */
    public static String getLookupKey() {
        String key = DATASOURCE_LOOKUP_KEY_HOLDER.get();
        return key == null ? DataSourceConfig.MAIN : key;
    }

    /**
     * 删除当前线程使用数据源 key
     */
    public static void removeLookupKey() {
        DATASOURCE_LOOKUP_KEY_HOLDER.remove();
    }

    @Override
    protected Object determineCurrentLookupKey() {
        final String lookupKey =getLookupKey();
        System.out.println("当前线程使用数据源:" + lookupKey);
        return lookupKey;
    }

}